home *** CD-ROM | disk | FTP | other *** search
/ Visual Cafe 3 / Visual Cafe 3.ISO / Vcafe / JFC.bin / MouseEventMulticaster.java < prev    next >
Text File  |  1998-06-30  |  6KB  |  200 lines

  1. /*
  2.  * @(#)MouseEventMulticaster.java    1.2 97/07/25
  3.  *
  4.  * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * This software is the confidential and proprietary information of Sun
  7.  * Microsystems, Inc. ("Confidential Information").  You shall not
  8.  * disclose such Confidential Information and shall use it only in
  9.  * accordance with the terms of the license agreement you entered into
  10.  * with Sun.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
  13.  * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  14.  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  15.  * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
  16.  * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
  17.  * THIS SOFTWARE OR ITS DERIVATIVES.
  18.  *
  19.  */
  20. package com.sun.java.swing;
  21.  
  22. import java.awt.Container;
  23. import java.awt.event.*;
  24. import java.awt.*;
  25. import java.util.*;
  26.  
  27. /**
  28.  * MouseEventMulticaster
  29.  *
  30.  * @version 1.2 07/25/97
  31.  * @author Dave Moore
  32.  */
  33.  
  34. import java.util.*;
  35.  
  36. class MouseEventMulticaster extends Vector implements MouseListener, MouseMotionListener {
  37.  
  38.     private MouseEvent currentMouseEvent(Component component, Point oldLocation, MouseEvent event) {
  39.         Point newLocation = component.getLocationOnScreen();
  40.  
  41.         if (newLocation.equals(oldLocation)) {
  42.             return event;
  43.         } else {
  44.             return new MouseEvent(component, event.getID(),
  45.                                   event.getWhen(), event.getModifiers(),
  46.                                   event.getX() + oldLocation.x - newLocation.x,
  47.                                   event.getY() + oldLocation.y - newLocation.y,
  48.                                   event.getClickCount(), event.isPopupTrigger());
  49.         }
  50.     }
  51.  
  52.     /**
  53.      * Handles the mouseClicked event by invoking the
  54.      * mouseClicked methods on listener-a and listener-b.
  55.      * @param e the mouse event
  56.      */
  57.     public void mouseClicked(MouseEvent e) {
  58.         int count = size();
  59.  
  60.         if (count == 1) {
  61.             ((MouseListener)elementAt(0)).mouseClicked(e);
  62.         } else {
  63.             Component component = e.getComponent();
  64.             Point oldLocation = component.getLocationOnScreen(), newLocation;
  65.  
  66.             while (count-- > 0) {
  67.                 ((MouseListener)elementAt(count)).mouseClicked(
  68.                     currentMouseEvent(component, oldLocation, e));
  69.             }
  70.         }
  71.     }
  72.  
  73.     /**
  74.      * Handles the mousePressed event by invoking the
  75.      * mousePressed methods on listener-a and listener-b.
  76.      * @param e the mouse event
  77.      */
  78.     public void mousePressed(MouseEvent e) {
  79.         int count = size();
  80.  
  81.         if (count == 1) {
  82.             ((MouseListener)elementAt(0)).mousePressed(e);
  83.         } else {
  84.             Component component = e.getComponent();
  85.             Point oldLocation = component.getLocationOnScreen(), newLocation;
  86.  
  87.             while (count-- > 0) {
  88.                 ((MouseListener)elementAt(count)).mousePressed(
  89.                     currentMouseEvent(component, oldLocation, e));
  90.             }
  91.         }
  92.     }
  93.  
  94.     /**
  95.      * Handles the mouseReleased event by invoking the
  96.      * mouseReleased methods on listener-a and listener-b.
  97.      * @param e the mouse event
  98.      */
  99.     public void mouseReleased(MouseEvent e) {
  100.         int count = size();
  101.  
  102.         if (count == 1) {
  103.             ((MouseListener)elementAt(0)).mouseReleased(e);
  104.         } else {
  105.             Component component = e.getComponent();
  106.             Point oldLocation = component.getLocationOnScreen(), newLocation;
  107.  
  108.             while (count-- > 0) {
  109.                 ((MouseListener)elementAt(count)).mouseReleased(
  110.                     currentMouseEvent(component, oldLocation, e));
  111.             }
  112.         }
  113.     }
  114.  
  115.     /**
  116.      * Handles the mouseEntered event by invoking the
  117.      * mouseEntered methods on listener-a and listener-b.
  118.      * @param e the mouse event
  119.      */
  120.     public void mouseEntered(MouseEvent e) {
  121.         int count = size();
  122.  
  123.         if (count == 1) {
  124.             ((MouseListener)elementAt(0)).mouseEntered(e);
  125.         } else {
  126.             Component component = e.getComponent();
  127.             Point oldLocation = component.getLocationOnScreen(), newLocation;
  128.  
  129.             while (count-- > 0) {
  130.                 ((MouseListener)elementAt(count)).mouseEntered(
  131.                     currentMouseEvent(component, oldLocation, e));
  132.             }
  133.         }
  134.     }
  135.  
  136.     /**
  137.      * Handles the mouseExited event by invoking the
  138.      * mouseExited methods on listener-a and listener-b.
  139.      * @param e the mouse event
  140.      */
  141.     public void mouseExited(MouseEvent e) {
  142.         int count = size();
  143.  
  144.         if (count == 1) {
  145.             ((MouseListener)elementAt(0)).mouseExited(e);
  146.         } else {
  147.             Component component = e.getComponent();
  148.             Point oldLocation = component.getLocationOnScreen(), newLocation;
  149.  
  150.             while (count-- > 0) {
  151.                 ((MouseListener)elementAt(count)).mouseExited(
  152.                     currentMouseEvent(component, oldLocation, e));
  153.             }
  154.         }
  155.     }
  156.  
  157.     /**
  158.      * Handles the mouseDragged event by invoking the
  159.      * mouseDragged methods on listener-a and listener-b.
  160.      * @param e the mouse event
  161.      */
  162.     public void mouseDragged(MouseEvent e) {
  163.         int count = size();
  164.  
  165.         if (count == 1) {
  166.             ((MouseMotionListener)elementAt(0)).mouseDragged(e);
  167.         } else {
  168.             Component component = e.getComponent();
  169.             Point oldLocation = component.getLocationOnScreen();
  170.  
  171.             while (count-- > 0) {
  172.                 MouseEvent newEvent = currentMouseEvent(component, oldLocation, e);
  173.  
  174.                 ((MouseMotionListener)elementAt(count)).mouseDragged(newEvent);
  175.             }
  176.         }
  177.     }
  178.  
  179.     /**
  180.      * Handles the mouseMoved event by invoking the
  181.      * mouseMoved methods on listener-a and listener-b.
  182.      * @param e the mouse event
  183.      */
  184.     public void mouseMoved(MouseEvent e) {
  185.         int count = size();
  186.  
  187.         if (count == 1) {
  188.             ((MouseMotionListener)elementAt(0)).mouseMoved(e);
  189.         } else {
  190.             Component component = e.getComponent();
  191.             Point oldLocation = component.getLocationOnScreen(), newLocation;
  192.  
  193.             while (count-- > 0) {
  194.                 ((MouseMotionListener)elementAt(count)).mouseMoved(
  195.                     currentMouseEvent(component, oldLocation, e));
  196.             }
  197.         }
  198.     }
  199. }
  200.